








import pdfplumber

pdf = pdfplumber.open("The_Old_Man_of_the_Sea.pdf")


pdf.metadata


pdf.pages


type(pdf.pages[0])





pdf = pdfplumber.open("test.pdf")


pages = pdf.pages
print(pages)


pages[0].page_number


print(pages[0].width, pages[0].height)


# 可视化第1页
pages[0].to_image()


# 可视化第2页（尝试调整分辨率和抗锯齿）
pages[1].to_image()














# 获取单页文本
p1_text = pages[0].extract_text()


print(p1_text)


# 获取单页文本（保留布局）
p1_text = pages[0].extract_text(layout=True)


print(p1_text)











# 获取单页表格
p1_table = pages[0].extract_table()


p1_table


# 获取单页所有表格
tables = pages[0].extract_tables()


len(tables)


tables


p1_debug_table = pages[0].debug_tablefinder()


type(p1_debug_table)


p1_debug_table.tables





import pandas as pd

df = pd.DataFrame(p1_table[1:], columns=p1_table[0])


df





# 可视化第一页
pages[0].to_image()


# 可视化第二页（尝试调整分辨率和抗锯齿）
pages[1].to_image()








# 从 PageImage 中获取页面图像分辨率
pages[1].images


img = pages[1].images[0]


bbox = (img["x0"], img["top"], img["x1"], img["bottom"])


cropped_page = pages[1].crop(bbox)


# 可视化裁剪后的第二页
cropped_page.to_image()


# 可视化裁剪后的第二页+抗锯齿
cropped_page.to_image(antialias=True)


cropped_page.to_image(resolution=1080)


im = cropped_page.to_image(antialias=True)
im.save("pdf_image_test.png")









